/*
* Copyright (C) 2010-2012 Magnus Skjegstad
* 
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
* 
* The latest version of this library can be downloaded from http://mist-pubsub.googlecode.com
* 
*/package com.skjegstad.mist2.managers;


import com.skjegstad.simpleevents.SimpleEventManager;
import com.skjegstad.simpleevents.SimpleEventPipe;
import com.skjegstad.mist2.datatypes.ConnectionIdentifier;
import com.skjegstad.mist2.events.ExceptionEvent;
import com.skjegstad.mist2.events.LogEvent;
import com.skjegstad.mist2.exceptions.MistException;


/**
 *
 * @author Magnus Skjegstad
 */
public class MistEventManager extends SimpleEventManager {

    public MistEventManager() {
        super();
        instanceName = "MIST-" + this.getInstanceName();
        defaultContext = "MAIN PIPE";
    }    
    
    public SimpleEventPipe getDataManagerEventPipe() {
        return this.getPipe("DATA_MGR");
    }
    
    public SimpleEventPipe getDataFragmentEventPipe(ConnectionIdentifier connectionIdentifier) {
        return this.getPipe("DATA_FRAGMENT_MGR_" + connectionIdentifier.getConnectionIdentifier());
    }
    
    public SimpleEventPipe getNodeManagerEventPipe() {
        return this.getPipe("NODE_MGR");        
    }
    
    public SimpleEventPipe getExceptionPipe() {
        return this.getPipe("EXCEPTIONS");
    }
    
    public SimpleEventPipe getLogPipe() {
        return this.getPipe("LOG");
    }
    
    public void throwException(MistException ex) {
        this.getExceptionPipe().trigger(new ExceptionEvent(ex));
    }
    
    public void log(String message) {
        this.getLogPipe().trigger(new LogEvent(message));
    }
}
